package com.nuanshui.heatedloan.userinfo.dal.mapper;

import com.nuanshui.heatedloan.userinfo.model.User;
import com.nuanshui.heatedloan.userinfo.model.UserInfo;
import com.nuanshui.heatedloan.userinfo.model.UserWeixinMsg;
import com.nuanshui.heatedloan.userinfo.vo.ThirdUserVO;
import com.nuanshui.heatedloan.userinfo.vo.UserVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;

import java.util.Collection;
import java.util.HashMap;
import java.util.List;


public interface UsersMapper {
	int deleteByPrimaryKey(String id);

	int insert(User record);

	User selectByPrimaryKey(String id);
	
	List<User> loadUsers(@Param("userIds") List<Long> userIds);

	List<UserInfo> loadUserInfos(@Param("userIds") List<Long> userIds);

	List<User> loadUsersByStringId(@Param("userIds") String... userIds);

	List<User> loadUsersByPhone(@Param("phones") List<String> phones);

	int updateByPrimaryKeySelective(User record);

	int updateUserInfo(UserInfo record);

	int update(User record);

	int countRegistered(String mobile);

	UserInfo loadByLoginname(String loginName);

	User loadByPhone(@Param("phone") String phone);

	int changePwd(@Param("id") String uid, @Param("newPwd") String newPwd);
	
	boolean emptyUserPassword(@Param("id") String userId);

	void findByNick(@Param("nick") String nick, @Param("userId") String userId);

	void setPhoneAndPasswdNull(@Param("userId") String userId);
	
	void realDeleteById(@Param("id") String id);

	 List<ThirdUserVO> loadUsersByWeibo(@Param("openIds") List<String> openIds);
	 
	 UserInfo loadUserInfo(@Param("userId") String userId);

	 List<User> loadAllUsers();
	
	 List<UserInfo> findHostSearchUsers(@Param("pager") Pageable pager);
	
	 List<UserInfo> findSearchUsers(@Param("userIds") Collection<String> userIds);

	 List<HashMap<String,Long>> findUserFansCount();

     UserInfo  loadSimplerUserInfo(@Param("userId") String userId);

     String getUserPhone(@Param("userId") String userId);

     UserInfo  getUserInfo(@Param("userId") String userId);

     /**
      * ����΢��������Ϣ
      * @param @param msg
      * @author guohao
      * @date 2016��4��26�� ����11:23:17
      * @since $
      */
     void saveUserWeixinMsg(@Param("msg") UserWeixinMsg msg);

     /**
      * ����΢���˺ŵ�user_id (��΢�Ŷ˵��˺Ű��ֻ��ʱ����ֻ���Ѿ����ڣ������΢���˺� �󶨵��ֻ���˺���)
      * @param 
      * @author guohao
      * @date 2016��4��21�� ����8:10:18
      * @since $
      */
     void  updateWeixinAccountUserId(@Param("userId") String userId, @Param("unionId") String unionId);

	/**
	 * @param userId
	 * @return
	 */
    String loadQrcodeByUserId(@Param("userId") String userId);

	List<User> findAllUser(@Param("pager") Pageable pager);

	long findAllUserCount();

	/**
	 * 查询，根据名字
	 * @author Gonzo
	 * @date 2016年12月22日下午6:16:30
	 * @param userName
	 * @return
	 * @since 1.0.0
	 */
    List<UserVo> findByName(@Param("userName") String userName);

	/**
	 * 根据用户id批量获取手机号
	 * @param  userIds
	 * @author guohao
	 * @date 2016年12月30日 下午2:16:17
	 * @since $
	 */
    List<String> loadPhoneByIds(@Param("userIds") List<String> userIds);
    
    /**
	 * 获取所有的用户id
	 * @param @return
	 * @author guohao
	 * @date 2017年1月16日 下午6:26:29
	 * @since $
	 */
	List<Long> loadAllUserIds();
	
	List<String> getUserIds(String nick);
	
}